package CGLIB;

import lombok.Data;
import org.springframework.cglib.proxy.Enhancer;

/**
 * @author KiraYous
 * @version V1.0
 * @Package CGLIB
 * @date 2021/9/16 16:11
 *
 * 代理工厂类，用来产生代理类（代理类是指由目标类加入切面之后形成的类，在cglib中实际上就是目标了类的子类）
 */
@Data
public class CGLIBProxyFactory {
    private  Object target; //被代理的类（目标类）
    private Object hasProxy;//代理类


    public Object createProxy(Object target){

        this.target=target;
        Enhancer enhancer=new Enhancer();
        enhancer.setSuperclass(target.getClass());
        enhancer.setCallback(MyMethodsInteceptor2.INSTANCE);
        this.hasProxy=enhancer.create();
        return hasProxy;
    }
}
